import os
from typing import Optional
from dotenv import load_dotenv

# 加载.env文件中的环境变量
load_dotenv()

class Settings:
    """
    应用配置类，管理所有配置参数
    
    从环境变量中读取配置，提供默认值
    """
    # API 基础配置
    DIFY_API_BASE_URL: str = os.getenv("DIFY_API_BASE_URL", "https://api.dify.ai/v1")
    DIFY_API_KEY: Optional[str] = os.getenv("DIFY_API_KEY")
    
    # 应用配置
    APP_HOST: str = os.getenv("APP_HOST", "0.0.0.0")
    APP_PORT: int = int(os.getenv("APP_PORT", "8000"))
    APP_TITLE: str = "Dify API Wrapper"
    APP_DESCRIPTION: str = "后端服务用于对接 Dify 应用 API"
    APP_VERSION: str = "0.1.0"
    DEBUG: bool = os.getenv("DEBUG", "False").lower() in ("true", "1", "t")
    
    # 超时配置
    TIMEOUT: int = int(os.getenv("TIMEOUT", "60"))  # 普通请求超时（秒）
    STREAMING_TIMEOUT: int = int(os.getenv("STREAMING_TIMEOUT", "300"))  # 流式请求超时（秒）
    
    # 日志配置
    LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO")

    def validate(self) -> None:
        """验证必要的配置参数"""
        if not self.DIFY_API_KEY:
            raise ValueError("DIFY_API_KEY 环境变量未设置，请在.env文件中配置")

# 创建全局设置实例
settings = Settings()
